package cn.song.freight.domain.query;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 查询实体 - 入参
 *
 * @author Song~
 * @date 2023/12/14
 */
@Data
@SuperBuilder
@AllArgsConstructor
public class QueryEntity {


    /**
     * 当前页码
     */
    private Integer currentPage;
    /**
     * 每页条数
     */
    private Integer pageSize;

    /**
     * 开始时间 - yyyy-MM-dd HH:mm:ss 格式
     */
    @DateTimeFormat(fallbackPatterns = {"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd","yyyy-MM"})
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startDate;
    /**
     * 结束时间 - yyyy-MM-dd HH:mm:ss 格式
     */
    @DateTimeFormat(fallbackPatterns = {"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd","yyyy-MM"})
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endDate;

    public QueryEntity() {
        this.currentPage = 1;
        this.pageSize = 10;
    }


    /**
     * 获取Plus分页对象
     *
     * @return {@link Page }
     * @date 2024/02/02
     * @author SongRenShuo
     */
    public Page<?> getPage() {

        return new Page<>(this.currentPage, this.pageSize);
    }
    /**
     * 获取Plus分页对象
     *
     * @return {@link Page }
     * @param <T>        Bean类型
     * @param beanClass  实体类对象
     * @date 2025/08/28
     * @author SongRenShuo
     */
    public <T> Page<T> getPage(Class<T> beanClass) {

        return new Page<>(this.currentPage, this.pageSize);
    }



    public void setStartDate(Date startDate) {
        this.startDate = DateUtil.date(startDate);
    }

    public void setEndDate(Date endDate) {
        this.endDate = DateUtil.date(endDate);
    }
}
